It may be necessary to run two or more systems concurrently, simultaneously, or in parallel, such as when migrating users from a legacy software system to a new, more modern, software system, when comparing the operation of equivalent applications that run on different computer platforms, or when measuring relative efficiency of programs that perform similar functions by means of different algorithms. In such cases, each system may comprise a combination of one or more software applications, computer systems, other computerized entities, other electronic entities, or one or more components of one or more communications infrastructures.
During such operation, it may be necessary to synchronize the operation of the two or more systems such that the two or more systems perform equivalent functions, store identical or equivalent repositories of information, or both produce equivalent or otherwise predictable output in response to equivalent input.
Synchronization may comprise functions like resolving differences between a pair of data models that each represent one or more data structures of one of the systems, resolving inconsistencies between each system's repository of production data, or ensuring that, when fed identical or analogous input, a component of one system and an analogous component of an other system correctly produce identical, similar, or analogous output.
One means of synchronization is a mechanism by which a monitoring entity detects revisions to production data stored by one or more of the systems being synchronized or detects revisions to a data model that represents a data structure or data organization associated with one of the systems being synchronized. This monitoring entity may be a hardware or software component of one of the systems being synchronized or it may be a distinct “intermediary” hardware or software entity that monitors the operation of the systems to be synchronized.
Such a monitoring entity may respond to a detection of a first revision to a first system by making a second revision or set of revisions to one or more other systems, in order to synchronize the operation of or the production data of the one or more other systems with the operation or data of the first system.
In such a case, the details or method of the second revision or set of revisions may be determined by one or more synchronization rules that tell the monitoring entity how to respond to a certain type of revision to the first system in order to synchronize the one or more other systems to the revised first system. A synchronization rule may also similarly describe how to translate a change to a data model or other data representation of the first system into an analogous change to a data model or other data representation of the one or more other systems. Such translations may not be trivial or obvious, especially when a data model or other data representation of the first system differs in a significant way from a data model or other data representation of the one or more other systems.
These synchronization rules may be difficult to generate and maintain with accuracy. Components of each system may be added, removed, patched, or otherwise modified in different ways and at different times, and each modification may necessitate revising, deleting, or creating one or more of the synchronization rules associated with the system. If the rules are not promptly updated to accommodate such changes, a rule may not identify a correct synchronization procedure when a monitoring entity identifies a need for synchronization. When synchronizing complex systems that require large numbers of rules, the tasks of generating and maintaining those rules may be complicated, vulnerable to error, and resource-intensive. There is thus a need for a way to automatically create, verify, and maintain synchronization rules in order to ensure that the rules are accurately and promptly created, deleted, or revised whenever necessary, and to confirm that the rules continue to correctly synchronize the systems.